package com.xjh.basestudy.lanqiaobei.base;

/**
 * 注意：
 * 1. 基本类型和包装类型不可使用强制类型转换，字符串转为数字：Long.parseLong()
 * 2. 关于数字类型：带很大数立方的，不能用int，要用long，不然会丢失精读。
 * 3. 需要一直循环用while(true),if判断跳出时用break跳出，法二：直接把条件放到while里，但是这种方法不适合终止条件很复杂的情况，比如猴子吃香蕉,把所求累加，直到满足约束为止
 * 4. 取余：n %5 ==1
 *
 * */
public class String_ {
    public static void main(String[] args) {
        String();

    }

    // 常用的java中字符串的处理方法
    public static void String() {
        // 字符串创建与初始化
        String str1 = "Hello, World!";  // 字符串直接赋值
        String str2 = new String("Hello, Java!");  // 使用 new 关键字创建字符串

        // 1. 字符串长度
        System.out.println("字符串1的长度: " + str1.length());  // 输出字符串的长度
        System.out.println("字符串2的长度: " + str2.length());

        // 2. 字符串拼接
        String result = str1 + " How are you?";  // 使用 + 运算符拼接
        System.out.println("拼接后的字符串: " + result);

        // 使用 StringBuilder 高效拼接
        StringBuilder sb = new StringBuilder();
        sb.append("Welcome to ");
        sb.append("Java!");
        System.out.println("StringBuilder拼接后的字符串: " + sb.toString());

        // 3. 字符串查找
        System.out.println("字符串1中 'World' 的索引位置: " + str1.indexOf("World"));
        System.out.println("字符串2中 'Java' 的最后索引位置: " + str2.lastIndexOf("Java"));

        // 4. 字符串比较
        String str3 = "hello";
        String str4 = "HELLO";
        System.out.println("str3和str4是否相等（忽略大小写）: " + str3.equalsIgnoreCase(str4));
        System.out.println("判断前面字符串末尾和后面字符串是否相同:"+"1234".endsWith("34"));

        // 5. 字符串截取substring,一个参数就是开始索引，从0开始，从length-1结束
        System.out.println("字符串1的子串（从索引7开始到末尾）: " + str1.substring(7));
        System.out.println("字符串2的子串（从索引0到5，不包含5）: " + str2.substring(0, 5));
        System.out.println("获取字符串的最后一位字符 " + str1.substring(str1.length() - 1));

        // 6. 字符串替换
        String str5 = "I like Java!";
        String replacedStr = str5.replace("Java", "Python");
        System.out.println("替换后的字符串: " + replacedStr);

        // 7. 去除字符串的空白字符
        String str6 = "   Hello World!   ";
        System.out.println("去除两端空白字符后的字符串: '" + str6.trim() + "'");

        // 8. 转换大小写
        System.out.println("字符串1转换为大写: " + str1.toUpperCase());
        System.out.println("字符串2转换为小写: " + str2.toLowerCase());

        // 9. 字符串分割
        String str7 = "apple,banana,orange";
        String[] fruits = str7.split(",");
        System.out.println("分割后的水果数组: ");
        for (String fruit : fruits) {
            System.out.println(fruit);
        }

        // 10. 字符串转换为数字
        String str8 = "123";
        int num = Integer.parseInt(str8);  // 将字符串转换为整数
        System.out.println("字符串转换为整数: " + num);

        // 11. 字符串与字符的转换
        char c = 'A';
        String charStr = Character.toString(c);  // 字符转换为字符串
        System.out.println("字符转换为字符串: " + charStr);

        // 12. 字符串转换为字符数组
        char[] charArray = str1.toCharArray();   // 12. 字符串转换为字符数组
        System.out.println("字符串转换为字符数组: ");
        for (char ch : charArray) {
            System.out.print(ch + " ");  // 输出: H e l l o ,   W o r l d !
        }

        // 13. 检查字符串是否为空
        System.out.println("字符串1是否为空: " + str1.isEmpty());
        System.out.println("字符串2是否为空或为null: " + (str2 == null || str2.isEmpty()));

        // 14. 字符串格式化
        String formattedStr = String.format("Hello, %s!", "Java");
        System.out.println("格式化后的字符串: " + formattedStr);

        // 15. 使用 printf 输出格式化的字符串
        System.out.printf("整数 %d 和浮点数 %.2f%n", 10, 3.14159);

        // 16. 数字转为字符串valueOf,字符串转为数字parseInt
        int num2 = 10;
        String num2Str = String.valueOf(num2);
        String num3Str = num2 + "";

    }

}

